Since the earliest days of computing, computer programs have contained bugs. The term "bugs" refers to errors in the computer program that cause the program to malfunction or to produce incorrect results. When a single program is executing within the memory of a computer system, a bug in the computer program will cause the computer program to execute in an undesirable manner. When multiple computer programs are executing within the memory of a computer system, a bug within one computer program may also affect the operations of a different computer program.
To illustrate how a bug in one computer program can affect the operations of a different computer program, consider the following example. FIG. 1 depicts two computer programs 104, 106, which reside within the memory 102 of a computer system 100. Program 106 contains a buffer 108 and resides within the memory region of 32k to 64k. The program 106 uses a pointer to reference buffer 108. Program 104 resides within the memory region of 128k to 256k. If computer program 106 stores information into buffer 108 within the local memory space of program 106 at location 45k, there is no effect on program 104. If, however, a bug within program 106 overwrote the pointer to the buffer 108 so that the pointer referred to a memory address between the range of 128K and 256K, a portion of program 104 would be overwritten when program 106 stored the information. Therefore, program 104 would execute in an unanticipated manner.
A bug from one program which affects the processing of a second program can have much more serious effects than illustrated above. If, for example, program 104 manipulated files and program 106 had a bug that overwrote a portion of program 104, then program 104 would behave unexpectedly with regard to the files that program 104 was currently manipulating. While program 104 was manipulating the flies, the bug in program 106 may cause program 104 to modify data within the files, delete the files, or corrupt the files so that the files would be rendered unusable. Therefore, when multiple programs are executing within the memory of a computer system, a bug within one program may cause a second program to behave in a destructive manner.